from data_source import InsuranceDataSource
from metrics_calculator import InsuranceMetricsCalculator
from visualizer import InsuranceVisualizer
import matplotlib.pyplot as plt


def main():
    # 1. 加载数据
    data_source = InsuranceDataSource()
    data = data_source.load_sample_data()
    print("数据加载完成，共{}个报告期".format(len(data)))

    # 2. 初始化计算器和可视化工具
    calculator = InsuranceMetricsCalculator(data)
    visualizer = InsuranceVisualizer(data, calculator)

    # 3. 生成可视化图表
    print("正在生成可视化图表...")

    # 3.1 原保费收入增长率趋势图（环比）
    plt1 = visualizer.plot_growth_trend(
        title="原保费收入环比增长率趋势",
        growth_func=calculator.get_original_premium_growth_rate
    )
    plt1.savefig("原保费增长率趋势.png", dpi=300)  # 保存图片
    plt1.show()

    # 3.2 市场份额与增量市场份额对比图
    plt2 = visualizer.plot_market_share_comparison()
    plt2.savefig("市场份额对比.png", dpi=300)
    plt2.show()

    # 3.3 13个月续保率趋势图
    plt3 = visualizer.plot_renewal_rate_trend()
    plt3.savefig("13个月续保率.png", dpi=300)
    plt3.show()

    # 3.4 营销渠道效率指标（人均保费与件均保费）
    plt4 = visualizer.plot_agent_efficiency()
    plt4.savefig("营销渠道效率.png", dpi=300)
    plt4.show()

    # 3.5 风险匹配指标（自留保费占净资产比）
    plt5 = visualizer.plot_risk_metric()
    plt5.savefig("风险匹配指标.png", dpi=300)
    plt5.show()

    print("所有图表已生成并保存")


if __name__ == "__main__":
    main()